package com.boge.ai.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ChineseSentenceSplitter {

    public static List<String> splitChineseSentences(String text) {
        // 匹配中文句子结束符：。？！\…\…（注意：需要转义）
        String regex = "([。？！]|\\…\\…)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        List<String> sentences = new ArrayList<>();
        List<String> punctuations = new ArrayList<>();

        int lastEnd = 0;

        // 遍历所有匹配的标点符号位置
        while (matcher.find()) {
            // 句子主体
            String sentence = text.substring(lastEnd, matcher.start() + 1);
            sentences.add(sentence);

            // 标点符号
            punctuations.add(matcher.group(1));

            lastEnd = matcher.end();
        }

        // 处理最后一个句子之后的内容（如果有的话）
        if (lastEnd < text.length()) {
            sentences.add(text.substring(lastEnd));
            punctuations.add("");
        }

        // 重新组合句子和标点
        List<String> result = new ArrayList<>();
        for (int i = 0; i < sentences.size(); i++) {
            String sentence = sentences.get(i);
            String punctuation = (i < punctuations.size()) ? punctuations.get(i) : "";
            result.add(sentence + punctuation);
        }

        return result;
    }

    public static void main(String[] args) {
        String text = "自然语言处理（NLP），作为计算机科学、人工智能与语言学的交融之地，致力于赋予计算机解析和处理人类语言的能力。在这个领域，机器学习发挥着至关重要的作用。利用多样的算法，机器得以分析、领会乃至创造我们所理解的语言。从机器翻译到情感分析，从自动摘要到实体识别，NLP的应用已遍布各个领域。随着深度学习技术的飞速进步，NLP的精确度与效能均实现了巨大飞跃。如今，部分尖端的NLP系统甚至能够处理复杂的语言理解任务，如问答系统、语音识别和对话系统等。NLP的研究推进不仅优化了人机交流，也对提升机器的自主性和智能水平起到了关键作用。";

        List<String> chunks = splitChineseSentences(text);

        for (int i = 0; i < chunks.size(); i++) {
            System.out.printf("块 %d: 长度 %d: %s%n", i + 1, chunks.get(i).length(), chunks.get(i));
        }
    }
}
